package com.atguigu.gulimall.member.config;

import feign.Logger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @Author yinhao
 * @Date 2021/1/8 18:55
 * @Description
 *
 * Spring Cloud Feign 在构建被 @FeignClient 注释修饰的服务客户端时，会为每一个客户端都创建一个 feign.Logger 实例。对于 Feign 的 logger 级别主要有下面 4 类：
 *      NONE：不记录任何信息（默认）
 *      BASIC：仅记录请求方法、URL 以及响应状态码和执行时间
 *      HEADERS：除了记录 BASIC 级别的信息之外，还会记录请求和响应的头信息。
 *      FULL：记录所有请求与响应的明细，包括头信息、请求体、元数据等。
 *
 * 由于默认的 Logger.Level 对象定义为 None 级别，不会记录任何 Feign 调用过程中的信息，首先要调整它的级别。如果要进行全局的日志级别设置
 *      1. 可以在主类中直接加入 Logger.level 的 Bean
 *      2. 编写配置类,然后在具体的Feign客户端来指定配置类以实现是否要调整不同的日志级别
 *
 * 最后要修改客户端日志的打印级别为Debug
 * 因为 Feign 只对日志级别为 debug 级别做出响应，所以如果需要打印出日志，除了前面的设置之外，还需要修改客户端的日志级别。
 * 可以在 application.properties 文件中使用 logging.level.<你的 Feign 客户端全路径类名> 的参数配置来开启指定 Feign 客户端的 DEBUG 日志：
 *      logging.level.com.example.feignconsumer.service.HelloService=DEBUG
 */

@Configuration
public class FeignLogConfig {

    /*
        NONE: 不记录
        BASIC: 记录基本的请求行,响应状态码
        HEADERS: 记录响应的头信息
        FULL: 记录完整的请求和响应的数据
     */
    @Bean
    public Logger.Level level(){
        return Logger.Level.FULL;
    }
}
